#include <ximera/scripting/lua/virtualmachine.hpp>
#include <ximera/common/utils.hpp>

//namespace luabind { namespace converters 
//{
//    yes_t is_user_defined(by_value<ximera::String>);
//    yes_t is_user_defined(by_const_reference<ximera::String>);
//
//    void convert_cpp_to_lua(lua_State* L, const ximera::String& s)
//    {
//        lua_pushstring(L, ximera::string_util::wstr2str(s).c_str());
//    }
//
//    ximera::String convert_lua_to_cpp(
//        lua_State* L, by_value<ximera::String>, int index)
//    {
//        return ximera::string_util::str2wstr(lua_tostring(L, index));
//    }
//
//    ximera::String convert_lua_to_cpp(
//        lua_State* L, by_const_reference<ximera::String>, int index)
//    {
//        return ximera::string_util::str2wstr(lua_tostring(L, index));
//    }
//
//    int match_lua_to_cpp(
//        lua_State* L, by_value<ximera::String>, int index)
//    {
//        if (lua_type(L, index) == LUA_TSTRING) return 0;
//        else return -1;
//    }
//
//    int match_lua_to_cpp(
//        lua_State* L, by_const_reference<ximera::String>, int index)
//    {
//        if (lua_type(L, index) == LUA_TSTRING) return 0;
//        else return -1;
//    }
//}}


namespace ximera { namespace scripting { namespace lua
{
    void VirtualMachine::bindBaseLib()
    {
        using namespace luabind;

        module(_state, "ximera")
        [
            class_<String>("String")
        ];
    }
}}}